
#include "mlMath.h"

//float vectorMag(const mVector3 &a) 
//{
//	return sqrt(a.X*a.X + a.Y*a.Y + a.Z*a.Z);
//}
//
//float vectorMagSq(const mVector3 &a)
//{
//	return a.X*a.X + a.Y*a.Y + a.Z*a.Z;
//}
//
//mVector3 crossProduct(const mVector3 &a, const mVector3 &b) 
//{
//	return mVector3(a.Y * b.Z - a.Z * b.Y, a.Z * b.X - a.X * b.Z, a.X * b.Y - a.Y * b.X);
//}
//
//float dotProduct(const mVector3 &a, const mVector3 & b)
//{
//	return a.X * b.X + a.Y * b.Y + a.Z * b.Z;
//}
//
//float distance(const mVector3 &a, const mVector3 &b) 
//{
//	float dx, dy, dz;
//	dx = a.X - b.X;
//	dy = a.Y - b.Y;
//	dz = a.Z - b.Z;
//	return sqrt(dx*dx + dy*dy + dz*dz);
//}


//mVector3 unproject(int x, int y)
//{
//	int viewport[4];
//	glGetIntegerv(GL_VIEWPORT, viewport);
//	double modelview[16]; 
//	glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
//	double projection[16]; 
//	glGetDoublev(GL_PROJECTION_MATRIX, projection);
//	mVector3 win(
//		x, 
//		(double)viewport[3] - y, 
//		0);
//	
//	double objx;
//	double objy;
//	double objz;
//
//	gluUnProject(
//		double(win.X), double(win.Y), double(win.Z), 
//		modelview, projection, viewport, 
//		&objx, &objy, &objz);
//
//	mVector3 p1(objx, objy, objz);
//	win.Z = 1;
//
//	gluUnProject(
//		double(win.X), double(win.Y), double(win.Z), 
//		modelview, projection, viewport, 
//		&objx, &objy, &objz);
//
//	mVector3 p2(objx, objy, objz);
//
//	p2 -= p1;
//	return p2;
//}